/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rmiserver;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Date;
import rmiserver.Ticket;
import rmiserver.Trip;

/**
 * Удаленный интерфейс 
 * @author alexxxey
 */
public interface TicketService extends Remote
{        
    /**
     * Список всех возможных маршрутов
     * @return Список маршрутов
     */
    ArrayList<Trip> getAllTrips() throws RemoteException;
           
    /**
     * Поиск автобусного маршрута по месту назначения
     * @param targetPlace Название места назначения
     * @return Список маршрутов
     */
    ArrayList<Trip> findTrip(String targetPlace) throws RemoteException;    
    
    /**
     * Поиск автобусного маршрута по дате отправления
     * @param tripDate Дата отправления
     * @return Список маршрутов
     */
    ArrayList<Trip> findTrip(Date tripDate) throws RemoteException;
    
    /**
     * Получение списка свободных мест на автобусный рейс
     * @param tripId - номер автобусного маршрута
     * @return Массив с номерами свобожных мест
     */
    ArrayList<Integer> getPlaces(int tripId) throws RemoteException;
    
    /**
     * Резервирование билета
     * @param ticket - объект резервируемого билета с заполненной информацией
     */
    void reserveTicket(Ticket ticket) throws RemoteException;
    
    /**
     * Получение списка всех зарезирвированных билетов
     * @param manId Номер пасморта пасажира
     * @return Список зарезервированных на этого пасажира билетов
     */
    ArrayList<Ticket> getReservedTickets(int manId) throws RemoteException;
    
    /**
     * Отмена разарвирования билета (билетов ?)
     * @param ticket 
     */
    void cancelReserveTicket(Ticket ticket) throws RemoteException;    
}
